/*
 * @Descripttion: 
 * @version: V1.0.0
 * @Author: LeonHe
 * @Date: 2021-05-23 21:38:42
 * @LastEditTime: 2021-05-30 16:21:04
 */
#ifndef __FOC_H_
#define __FOC_H_
#include "svpwm.h"
#include "arm_math.h"
#include "PidContorller.h"

typedef struct
{
    //两相采样电流
    q15_t Ia;
    q15_t Ib;

    //二维坐标值
    q15_t Ialpha;
    q15_t Ibeta;

    //电角度
    q15_t elcAngle;
    //电角度的三角函数值
    q31_t sinVal;
    q31_t cosVal;

    //PID控制器
    pidConQ15StDef IdPid;
    pidConQ15StDef IqPid;
    pidConQ15StDef SpdPid;
    pidConQ15StDef PosPid;

    //SVPWM输出
    StPwmDuty_t out;
    uint32_t ccrTemp[3];

    //校准状态
    uint16_t focCalibrating;
}focDataStDef;

typedef struct
{
    q15_t EncZeroOffset;
    q15_t CurrentOffset[2];
}focCalbStDef;

extern focDataStDef focDataSt;
extern focCalbStDef focCalbSt;


void focInit(void);
void focLoop(void);
void focCalibrate(void);
static void encoderUpdate(void);

#endif
